JS 2018

Web Development - জাভাস্ক্রিপ্ট (JavaScript) জাভাস্ক্রিপ্ট আপডেট ভার্সন (JS Update Version) |
310
310

ECMAScript 2018 (ES9) জাভাস্ক্রিপ্টের একটি গুরুত্বপূর্ণ আপডেট যা ২০১৮ সালে প্রকাশিত হয়েছিল। ES9 পূর্ববর্তী সংস্করণগুলোর উপর ভিত্তি করে তৈরি এবং এতে বিভিন্ন নতুন ফিচার ও উন্নত বৈশিষ্ট্য যুক্ত করা হয়েছে, যা ডেভেলপারদের জন্য কোড লেখাকে আরও সহজ, কার্যকর এবং শক্তিশালী করে তোলে। এই আপডেটে অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং, অবজেক্ট ও অ্যারে ম্যানিপুলেশন, এবং রেগুলার এক্সপ্রেশন (RegEx) উন্নত করার জন্য নতুন বৈশিষ্ট্য যুক্ত করা হয়েছে।


ES9 এর প্রধান বৈশিষ্ট্যসমূহ

অ্যাসিঙ্ক্রোনাস ইটারেটর (Asynchronous Iteration)

অ্যাসিঙ্ক্রোনাস ইটারেটর ES9 এ পরিচিতি পেয়েছে, যা for-await-of লুপ ব্যবহার করে অ্যাসিঙ্ক্রোনাস ডেটার উপর ইটারেশন করতে সহায়তা করে। এটি অ্যাসিঙ্ক্রোনাস ডেটার প্রবাহকে আরও সহজ এবং রিডেবল করে তোলে।

উদাহরণ:

async function fetchData(urls) {
    for await (const url of urls) {
        const response = await fetch(url);
        const data = await response.json();
        console.log(data);
    }
}

const urls = [
    'https://api.example.com/data1',
    'https://api.example.com/data2',
    'https://api.example.com/data3'
];

fetchData(urls);

ব্যাখ্যা: এখানে, for-await-of লুপ ব্যবহার করে অ্যাসিঙ্ক্রোনাসভাবে URLs থেকে ডেটা ফেচ করা হচ্ছে এবং প্রতিটি ডেটা লজ করা হচ্ছে।


অবজেক্ট রেস্ট/স্প্রেড প্রপার্টি (Object Rest/Spread Properties)

ES9 এ অবজেক্টের জন্য রেস্ট এবং স্প্রেড প্রপার্টি সমর্থন করা হয়েছে, যা অবজেক্ট ম্যানিপুলেশনকে আরও সহজ করে তোলে।

উদাহরণ:

const person = {
    name: 'Alice',
    age: 25,
    city: 'Dhaka'
};

// রেস্ট প্রপার্টি
const { name, ...details } = person;
console.log(name);     // আউটপুট: Alice
console.log(details);  // আউটপুট: { age: 25, city: 'Dhaka' }

// স্প্রেড প্রপার্টি
const updatedPerson = { ...person, age: 26 };
console.log(updatedPerson);  // আউটপুট: { name: 'Alice', age: 26, city: 'Dhaka' }

ব্যাখ্যা: রেস্ট প্রপার্টি ব্যবহার করে অবজেক্ট থেকে নির্দিষ্ট প্রপার্টি আলাদা করা হয়েছে এবং স্প্রেড প্রপার্টি ব্যবহার করে অবজেক্টে নতুন প্রপার্টি যোগ করা হয়েছে।


romise.prototype.finally()

finally() মেথডটি প্রমিসের শেষে কিছু কোড চালানোর জন্য ব্যবহৃত হয়, যা প্রমিস সফল বা ব্যর্থ হোক না কেন এক্সিকিউট হয়। এটি কোডের রিডেবিলিটি এবং মেইনটেনেবিলিটি বাড়ায়।

উদাহরণ:

function fetchData() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            // resolve("Data fetched successfully!");
            reject("Error fetching data!");
        }, 2000);
    });
}

fetchData()
    .then(data => console.log(data))
    .catch(error => console.error(error))
    .finally(() => console.log("Operation completed."));
/*
আউটপুট:
Error fetching data!
Operation completed.
*/

ব্যাখ্যা: finally() ব্লকটি প্রমিসের শেষে নির্বিশেষে এক্সিকিউট হয়, তাই এটি রিসোর্স ক্লিনআপ বা অন্যান্য ক্রিয়াকলাপের জন্য ব্যবহার করা যায়।


রেগুলার এক্সপ্রেশন (RegEx) উন্নতি

ES9 এ রেগুলার এক্সপ্রেশন নিয়ে কিছু উন্নতি করা হয়েছে, যা প্যাটার্ন ম্যাচিংকে আরও শক্তিশালী করে তোলে।

a. লুকবিহাইন্ড অ্যাসারশনস (Lookbehind Assertions)

লুকবিহাইন্ড অ্যাসারশনস রেগুলার এক্সপ্রেশনে পূর্ববর্তী প্যাটার্নের উপর ভিত্তি করে ম্যাচিং করতে সহায়তা করে।

উদাহরণ:
const regex = /(?<=\$)\d+/;
const price = "$100";
const result = price.match(regex);
console.log(result[0]);  // আউটপুট: 100

ব্যাখ্যা: এখানে, (?<=\$) অংশটি $ চিহ্নের পরে সংখ্যাগুলো খুঁজে বের করে।

b. নেমড ক্যাপচার গ্রুপস (Named Capture Groups)

নেমড ক্যাপচার গ্রুপস ক্যাপচার গ্রুপগুলির জন্য নাম নির্ধারণ করতে দেয়, যা কোডে রিডেবিলিটি বৃদ্ধি করে।

উদাহরণ:
const regex = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;
const date = "2024-12-16";
const result = date.match(regex);
console.log(result.groups.year);   // আউটপুট: 2024
console.log(result.groups.month);  // আউটপুট: 12
console.log(result.groups.day);    // আউটপুট: 16

ব্যাখ্যা: এখানে, year, month, এবং day নামে ক্যাপচার গ্রুপ নির্ধারণ করা হয়েছে।

c. ডটঅল ফ্ল্যাগ (DotAll Flag)

ডটঅল ফ্ল্যাগ s ব্যবহার করে রেগুলার এক্সপ্রেশনকে নতুন লাইন চরিত্রগুলির সাথে মিলতে দেয়।

উদাহরণ:
const regex = /hello.world/s;
const text = "hello\nworld";
console.log(regex.test(text));  // আউটপুট: true

ব্যাখ্যা: s ফ্ল্যাগ ব্যবহার করে, ডট (.) নতুন লাইন চরিত্রেও ম্যাচ করে।

d. ইউনিকোড প্রপার্টি এস্কেপস (Unicode Property Escapes)

ইউনিকোড প্রপার্টি এস্কেপস ইউনিকোড ক্যারেক্টারের বৈশিষ্ট্য অনুযায়ী ম্যাচিং করতে দেয়।

উদাহরণ:
const regex = /\p{Emoji}/u;
const text = "😊";
console.log(regex.test(text));  // আউটপুট: true

ব্যাখ্যা: \p{Emoji} ইউনিকোড প্রপার্টি ব্যবহার করে ইমোজি ক্যারেক্টার চিহ্নিত করা হয়েছে।


ট্রেইলিং কমা (Trailing Comma)

ES9 এ ফাংশনের প্যারামিটার লিস্ট এবং কলগুলিতে ট্রেইলিং কমা ব্যবহার করার সুবিধা যুক্ত করা হয়েছে, যা কোডের সংস্করণ নিয়ন্ত্রণকে সহজ করে তোলে।

উদাহরণ:

function greet(
    name,
    age,
) {
    console.log(`Hello, ${name}. You are ${age} years old.`);
}

greet("Alice", 25,);
/*
আউটপুট:
Hello, Alice. You are 25 years old.
*/

ব্যাখ্যা: ট্রেইলিং কমা ব্যবহার করলে প্যারামিটার যুক্ত বা বাদ দেওয়া সহজ হয় এবং ডিফারেন্স রেগুলার এক্সপ্রেশন এড়ানো যায়।


ES9 এর অন্যান্য বৈশিষ্ট্যসমূহ

bject.getOwnPropertyDescriptors()

Object.getOwnPropertyDescriptors() মেথডটি একটি অবজেক্টের সকল প্রপার্টির ডেটা প্রোপার্টি ডেসক্রিপটরস (যেমন writable, enumerable, configurable) রিটার্ন করে।

উদাহরণ:

const person = {
    name: "Alice",
    age: 25
};

const descriptors = Object.getOwnPropertyDescriptors(person);
console.log(descriptors);
/*
আউটপুট:
{
    name: { value: 'Alice', writable: true, enumerable: true, configurable: true },
    age: { value: 25, writable: true, enumerable: true, configurable: true }
}
*/

ব্যাখ্যা: এই মেথডটি অবজেক্টের প্রপার্টিগুলোর গুণাবলী সম্পর্কে বিস্তারিত তথ্য প্রদান করে, যা অবজেক্ট ম্যানিপুলেশনে সহায়ক।


ES9 এর সুবিধাসমূহ

  • কোডের সংক্ষিপ্ততা এবং পাঠযোগ্যতা: নতুন মেথড এবং অপারেটরগুলো কোডকে আরও সংক্ষিপ্ত এবং সহজবোধ্য করে তোলে।
  • অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং উন্নতি: for-await-of এবং async/await এর মাধ্যমে অ্যাসিঙ্ক্রোনাস কোড লেখা সহজ এবং রিডেবল হয়।
  • অবজেক্ট ম্যানিপুলেশন উন্নত: Object.entries(), Object.values(), Object.fromEntries(), এবং Object.getOwnPropertyDescriptors() মেথডগুলো অবজেক্ট ম্যানিপুলেশনকে আরও কার্যকরী করে তোলে।
  • স্ট্রিং ম্যানিপুলেশন সহজ করা: padStart() এবং padEnd() মেথডগুলো স্ট্রিংয়ের শুরু বা শেষে নির্দিষ্ট সংখ্যক ক্যারেক্টার যোগ করা সহজ করে।
  • রেগুলার এক্সপ্রেশন শক্তিশালী করা: লুকবিহাইন্ড অ্যাসারশনস, নেমড ক্যাপচার গ্রুপস, ডটঅল ফ্ল্যাগ, এবং ইউনিকোড প্রপার্টি এস্কেপস রেগুলার এক্সপ্রেশনকে আরও শক্তিশালী এবং নমনীয় করে তোলে।
  • কোডের রক্ষণাবেক্ষণ সহজ করা: ট্রেইলিং কমা ব্যবহার করে প্যারামিটার লিস্ট এবং কলগুলিকে আরও সহজে মেইনটেন করা যায়।

সারাংশ

ECMAScript 2018 (ES9) জাভাস্ক্রিপ্টের ভাষাকে আরও শক্তিশালী এবং কার্যকর করে তোলে। অ্যাসিঙ্ক্রোনাস ইটারেটর, অবজেক্ট রেস্ট/স্প্রেড প্রপার্টি, প্রমিসের finally(), এবং রেগুলার এক্সপ্রেশন উন্নতির মতো ফিচারগুলো ডেভেলপারদের কোড লেখাকে আরও সহজ, সংক্ষিপ্ত এবং রিডেবল করে তোলে। এছাড়াও, স্ট্রিং ম্যানিপুলেশন এবং অবজেক্ট ম্যানিপুলেশনের নতুন মেথডগুলো ডেটা হ্যান্ডলিংকে আরও কার্যকরী করে তোলে।

এই নতুন বৈশিষ্ট্যগুলো শেখা এবং ব্যবহার করা ডেভেলপারদের কোডের গুণগত মান এবং কার্যকারিতা বৃদ্ধি করতে সহায়ক, যা বড় এবং জটিল প্রজেক্টগুলির ক্ষেত্রে বিশেষভাবে উপকারী।


অতিরিক্ত টিপস

  • অ্যাসিঙ্ক্রোনাস কোড লেখা অনুশীলন করুন: for-await-of এবং async/await ব্যবহার করে অ্যাসিঙ্ক্রোনাস ফাংশনগুলো লিখে দেখুন এবং তাদের কার্যকারিতা বুঝুন।
  • অবজেক্ট মেথডগুলো ব্যবহার করুন: Object.entries(), Object.values(), Object.fromEntries(), এবং Object.getOwnPropertyDescriptors() মেথডগুলো ব্যবহার করে অবজেক্ট ম্যানিপুলেশন অনুশীলন করুন।
  • রেগুলার এক্সপ্রেশন শিখুন: রেগুলার এক্সপ্রেশন এর উন্নত বৈশিষ্ট্যগুলো ব্যবহার করে বিভিন্ন স্ট্রিং ম্যানিপুলেশন টাস্ক সমাধান করার চেষ্টা করুন।
  • স্ট্রিং প্যাডিং ব্যবহার করুন: স্ট্রিং ম্যানিপুলেশনে padStart() এবং padEnd() মেথডগুলো ব্যবহার করে বিভিন্ন উদাহরণ তৈরি করুন।
  • ট্রেইলিং কমা ব্যবহার করুন: ফাংশনের প্যারামিটার লিস্ট এবং কলগুলিতে ট্রেইলিং কমা ব্যবহার করে কোডের রক্ষণাবেক্ষণ সহজ করুন।
  • ব্রাউজার সমর্থন পরীক্ষা করুন: আপনার টার্গেট ব্রাউজারগুলো ES9 এর নতুন ফিচারগুলো সমর্থন করে কিনা তা নিশ্চিত করুন।
  • ডকুমেন্টেশন পড়ুন: MDN Web Docs এর মতো রিসোর্স থেকে ES9 এর নতুন বৈশিষ্ট্যগুলোর বিস্তারিত জানুন এবং বিভিন্ন ব্যবহারিক উদাহরণ অনুসরণ করুন।

ES9 এর নতুন বৈশিষ্ট্যগুলোকে ভালোভাবে বুঝে এবং প্রয়োগ করে আপনি আপনার জাভাস্ক্রিপ্ট প্রোগ্রামিং দক্ষতাকে আরও উন্নত এবং কার্যকরী করতে পারবেন, যা আপনার কোডকে আরও নির্ভরযোগ্য এবং শক্তিশালী করে তুলবে।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion